package com.hobee.basic.model.es;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

/**
 * index_options： 参数用于控制添加到倒排索引中的信息，服务于搜索和高亮等目的。他可以包括以下参数：
 *      docs： 只有文档编号被索引。能够回答的问题只有此 term（词条）是否存在于此字段。
 *      freqs：文档编号和 term（词条）的频率会被索引。term（词条）频率用于给搜索评分，重复出现的 term（词条）评分将高于单个出现的  term（词条）。
 *      positions：文档编号、term frequencies（词条频率）和 term（词条）位置（或顺序）将被索引。Position被用于 proximity queries （邻近查询）和 phrase queries（短语查询）。
 *      offsets： 文档编号、term（词条）频率,位置,起始和结尾字符偏移量（用于映射该 term （词条）到原始字符串）将被索引。Offset用于postings highlighter。
 *      被分析器分析的字符串字段使用 position 作为默认值，其他的字段使用 docs 作为默认值。
 * store：
 *      指定是否将字段的原始值写入索引，默认值是no，字段值被分析，能够被搜索，但是，字段值不会存储，这意味着，该字段能够被查询，但是不会存储字段的原始值。
 * analyzer：
 *      该属性定义用于建立索引和搜索的分析器名称，默认值是全局定义的分析器名称，该属性可以引用在配置结点（settings）中自定义的分析器；
 *      建议：索引时用ik_max_word(最细力度)，在搜索时用ik_smart(最粗力度)。即：索引时最大化的将文章内容分词，搜索时更精确的搜索到想要的结果。
 * search_analyzer：
 *      该属性定义的分析器，用于处理发送到特定字段的查询字符串；
 *
 * @author junjie.li;
 * @date 2020/7/22 17:04;
 */
@Data
@Document(indexName = "classtype", type = "classtype")
public class ClassType {

    @Id
    @Field(type = FieldType.Keyword)
    private String classtypeId;

    @Field(type = FieldType.Keyword)
    private String pypId;

    @Field(type = FieldType.Keyword)
    private String brandId;

    @Field(type = FieldType.Keyword)
    private String projectId;

    @Field(type = FieldType.Text, store = true, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word")
    private String classtypeName;

    @Field(type = FieldType.Integer, store = true)
    private Integer projectYear;

    @Field(type = FieldType.Text, store = true, pattern ="yyyy-MM-dd HH:mm:ss")
    private String classtypeExpiredate;
}
